using FluentNHibernate.Mapping;

namespace Neturion.Dados
{
    public class MapPessoa : ClassMap<Pessoa>
    {
        public MapPessoa()
        {
            Table("pessoas");
            Id(x => x.PessoaId);
            Map(x => x.NomeRazaoSocial);
            Map(x => x.ApelidoFantasia).Length(200);
            Map(x => x.NomeReduzido).Length(30);
            Map(x => x.CpfCnpj).Index("idx_CpfCnpj");
            Map(x => x.HomePage);
            References(x => x.Midia).Not.LazyLoad();
            Map(x => x.EnumTipoPessoa).CustomType(typeof(EnumTipoPessoa));
            Map(x => x.DataCadastro);
            Map(x => x.InicioVigencia);
            Map(x => x.FimVigencia);
            Map(x => x.DataNascimentoAbertura);
            Map(x => x.EnumEscolaridade).CustomType(typeof (EnumEscolaridade));
            Map(x => x.EnumEstadoCivil).CustomType(typeof (EnumEstadoCivil));
            Map(x => x.EnumTipoSexo).CustomType(typeof(EnumTipoSexo));
            Map(x => x.Observacao).CustomSqlType("TEXT");
            HasMany<Endereco>(x => x.ListaEnderecos).Not.LazyLoad().Cascade.AllDeleteOrphan();
            HasMany<Registro>(x => x.ListaRegistros).Not.LazyLoad().Cascade.AllDeleteOrphan();
            HasMany<Telefone>(x => x.ListaTelefones).Not.LazyLoad().Cascade.AllDeleteOrphan();
            HasMany<Email>(x => x.ListaEmails).Not.LazyLoad().Cascade.AllDeleteOrphan();
            HasMany<ContaBanco>(x => x.ListaContasBanco).Not.LazyLoad().Cascade.AllDeleteOrphan();
            HasMany<ReferenciaPessoa>(x => x.ListaReferenciaPessoas).Not.LazyLoad().Cascade.AllDeleteOrphan();
            References(x => x.NeturionLog).Not.LazyLoad();
        }
    }
}